package com.project.service;

import com.github.pagehelper.PageInfo;
import com.project.bean.OrderBean;
import com.project.bean.OrderServiceBean;
import com.project.bean.ShopCarBean;

import java.time.LocalDate;
import java.util.Map;

/**
 * 订单接口
 */
public interface IOrderService {

    //*********************前台**********************************
    public static final int PAGESIZE=5;

    /**
     * 按条件查找商品订单分页对象,只封装商品订单需要的数据
     * @param start 开始日期
     * @param end  结束日期
     * @param state 订单状态
     * @return
     */
    public PageInfo<OrderBean> findProductByItem(int pageNO, LocalDate start, LocalDate end, String state);

    /**
     * 按条件查找服务订单分页对象,只封装服务订单需要的数据
     * @param start 开始日期
     * @param end  结束日期
     * @param state 订单状态
     * @return
     */
    public PageInfo<OrderBean> findServiceByItem(int pageNO, LocalDate start, LocalDate end, String state);


    /**
     * 按订单id查找订单详情，只查找商品订单,并查找该订单明细
     * @param id 订单id
     * @return 订单对象
     */
    public OrderBean findProductById(int id);

    /**
     * 按订单id查找订单详情，只查找服务订单,并查找该订单明细
     * @param id 订单id
     * @return  订单对象
     */
    public OrderBean findServiceById(int id);

    /**
     * 修改订单的状态
     * @param id  订单id
     * @param state  需要修改的状态
     */
    public void updateOrder(int id, String state);

    /**
     * 添加商品订单订单,并把购物车得map集合，重新整合成，按店铺id做键，商品集合做值得map，集合。
     *      * 再依次生成订单。并添加数据库，订单表，和订单商品明细表数据
     * @param order 订单对象
     * @param map  购物车集合
     */
    public void  addProductOrder(OrderBean order, Map<Integer, ShopCarBean> map);

    /**
     * 添加服务订单，并添加数据库，订单表，和订单服务明细表数据
     * @param order
     * @param serviceBean
     */
    public void addServiceOrder(OrderBean order, OrderServiceBean serviceBean);

    //*********************前台**********************************


}
